package CLIENT.Station;

import java.util.List;

import javax.swing.JFrame;

import UI.SplashConnexion;
import UI.StationUI;

public class mainStation {

	// Attributs
	public static OperateurSystem.GestionAuthentification maGestAuth;
	public static OperateurSystem.GestionColis maGestionColis ;
	private static Station moiMeme  ;
	
	// Methodes
	public static Station getMoiMeme() {
		return moiMeme;
	}
	public static void setMoiMeme(Station moiMeme) {
		mainStation.moiMeme = moiMeme;
	}
	
	// Main
	public static void main(String[] args) {
		try {
			
			
			switch(args[0]){
			
			case "1":
				moiMeme = new Station(EnumZones.ZONE1);
			case "2":
				moiMeme = new Station(EnumZones.ZONE2);
			case "3":
				moiMeme = new Station(EnumZones.ZONE3);
			case "4":
				moiMeme = new Station(EnumZones.ZONE4);
			default: 
				System.out.println("Zone en params.Veuillez donner une zone valide pour la station lancéee");
			
			}
			

			//TODO C'est un code a appeller par l'operateur system et l'appel se fera en utilisant l IOR
			// car c'est l'operateur sytem qui est le client de l'adherent pour invoquer sur lui les notifications
			// Intialisation de l'orb
			org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null);



	        // Saisie du nom de l'objet (si utilisation du service de nommage)
	     
	        String idObj1 ="OperateurSystemGestAuth";
	        String idObj2 ="OperateurSystemGestColis";

	        // Recuperation du naming service
	        org.omg.CosNaming.NamingContext nameRoot =
	        		org.omg.CosNaming.NamingContextHelper.narrow(orb.resolve_initial_references("NameService"));

	        // Construction du nom a rechercher
	        org.omg.CosNaming.NameComponent[] nameToFind1 = new org.omg.CosNaming.NameComponent[1];
	         nameToFind1[0] = new org.omg.CosNaming.NameComponent(idObj1,"");
	        org.omg.CosNaming.NameComponent[] nameToFind2 = new org.omg.CosNaming.NameComponent[1];
	         nameToFind2[0] = new org.omg.CosNaming.NameComponent(idObj2,"");

	        // Recherche aupres du naming service
	        org.omg.CORBA.Object CORinterfaceGestAuth = nameRoot.resolve(nameToFind1);
	        org.omg.CORBA.Object CORinterfaceGestColis = nameRoot.resolve(nameToFind2);
	        System.out.println("Objet '" + idObj1 + "' trouve aupres du service de noms. IOR de l'objet :");
	        System.out.println(orb.object_to_string(maGestAuth));
	        System.out.println("Objet '" + idObj2 + "' trouve aupres du service de noms. IOR de l'objet :");
	        System.out.println(orb.object_to_string(maGestionColis));

	        // Utilisation directe de l'IOR (SAUF utilisation du service de nommage)
//	        org.omg.CORBA.Object distantEuro = orb.string_to_object("IOR:000000000000001b49444c3a436f6e766572746973736575722f4575726f3a312e300000000000010000000000000082000102000000000a3132372e302e302e3100e72e00000031afabcb0000000020a40e9e4900000001000000000000000100000008526f6f74504f410000000008000000010000000014000000000000020000000100000020000000000001000100000002050100010001002000010109000000010001010000000026000000020002");

	        // Casting de l'objet CORBA au type OperateurSystem 
	        maGestAuth = OperateurSystem.GestionAuthentificationHelper.narrow(CORinterfaceGestAuth);
	        maGestionColis = OperateurSystem.GestionColisHelper.narrow(CORinterfaceGestColis);
	        
	        maGestAuth.
	        
	        // Appel de l'interface graphique
	        JFrame splash = new StationUI();
	        splash.setVisible(true);
		}
		catch (Exception e) {
			e.printStackTrace();
		}

	}

}
